home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / PowerPC / pdflib / bind / tcl / pdfclock.tcl < prev    next >
Text File  |  2000-05-16  |  3KB  |  111 lines

  1. #!/bin/sh
  2. # PDFlib client: pdfclock example in Tcl
  3. # (C) Thomas Merz 1998-99
  4.  
  5. # Hide the exec to TCL but not to the shell by appending a backslash\
  6. exec tclsh "$0" ${1+"$@"}
  7.  
  8. # The lappend line is unnecessary if PDFlib has been installed
  9. # in the Tcl package directory
  10. lappend auto_path .
  11.  
  12. package require pdflib 2.01
  13.  
  14. set RADIUS 200.0
  15. set MARGIN 20.0
  16.  
  17. set p [PDF_new]
  18.  
  19. if {[PDF_open_file $p "pdfclock_tcl.pdf"] == -1} {
  20.     puts stderr "Couldn't open PDF file!"
  21. }
  22.  
  23.  
  24. PDF_set_info $p "Creator" "pdfclock.tcl"
  25. PDF_set_info $p "Author" "Thomas Merz"
  26. PDF_set_info $p "Title" "PDF clock (Tcl)"
  27.  
  28. PDF_begin_page $p [expr 2 * ($RADIUS + $MARGIN)] [expr  2 * ($RADIUS + $MARGIN)]
  29.  
  30. PDF_set_transition $p "wipe"
  31. PDF_set_duration $p 0.5
  32.  
  33. PDF_translate $p [expr $RADIUS + $MARGIN] [expr $RADIUS + $MARGIN]
  34. PDF_setrgbcolor $p 0.0 0.0 1.0
  35. PDF_save $p
  36.  
  37. # minute strokes
  38. PDF_setlinewidth $p 2.0
  39. for {set alpha  0} {$alpha < 360} {set alpha [expr $alpha + 6]} {
  40.     PDF_rotate $p 6.0
  41.     PDF_moveto $p $RADIUS 0.0
  42.     PDF_lineto $p [expr $RADIUS-$MARGIN/3] 0.0
  43.     PDF_stroke $p
  44. }
  45.  
  46. PDF_restore $p
  47. PDF_save $p
  48.  
  49. # 5 minute strokes
  50. PDF_setlinewidth $p 3.0
  51. for {set alpha  0} {$alpha < 360} {set alpha [expr $alpha + 30]} {
  52.     PDF_rotate $p 30.0
  53.     PDF_moveto $p $RADIUS 0.0
  54.     PDF_lineto $p [expr $RADIUS-$MARGIN] 0.0
  55.     PDF_stroke $p
  56. }
  57.  
  58. set tm_hour [ clock format [clock seconds] -format "%I" ]
  59. set tm_min  [ clock format [clock seconds] -format "%M" ]
  60. set tm_sec  [ clock format [clock seconds] -format "%S" ]
  61.  
  62. # This is a Tcl-itis: when the clock returns "08" seconds, tm_sec
  63. # won't be recognized as an integer. Therefore we "cast" it to integer.
  64. # Note that this doesn't happen with, for example, the value "07"
  65. # because this is a valid octal number...
  66.  
  67. scan $tm_hour %d tm_hour 
  68. scan $tm_min  %d tm_min 
  69. scan $tm_sec  %d tm_sec 
  70.  
  71. # draw hour hand
  72. PDF_save $p
  73. PDF_rotate $p [expr -(($tm_min/60.0) + $tm_hour - 3.0) * 30.0]
  74. PDF_moveto $p [expr -$RADIUS/10] [expr -$RADIUS/20]
  75. PDF_lineto $p [expr $RADIUS/2] 0.0
  76. PDF_lineto $p [expr -$RADIUS/10] [expr $RADIUS/20]
  77. PDF_closepath $p
  78. PDF_fill $p
  79. PDF_restore $p
  80.  
  81. # draw minute hand
  82. PDF_save $p
  83. PDF_rotate $p [expr -(($tm_sec/60.0) + $tm_min - 15.0) * 6.0]
  84. PDF_moveto $p [expr -$RADIUS/10] [expr -$RADIUS/20]
  85. PDF_lineto $p [expr $RADIUS * 0.8] 0.0
  86. PDF_lineto $p [expr -$RADIUS/10] [expr $RADIUS/20]
  87. PDF_closepath $p
  88. PDF_fill $p
  89. PDF_restore $p
  90.  
  91. # draw second hand
  92. PDF_setrgbcolor $p 1.0 0.0 0.0
  93. PDF_setlinewidth $p 2
  94. PDF_save $p
  95. PDF_rotate $p [expr -(($tm_sec - 15.0) * 6.0)]
  96. PDF_moveto $p [expr -$RADIUS/5] 0.0
  97. PDF_lineto $p $RADIUS 0.0
  98. PDF_stroke $p
  99. PDF_restore $p
  100.  
  101. # draw little circle at center
  102. PDF_circle $p 0 0 [expr $RADIUS/30]
  103. PDF_fill $p
  104.  
  105. PDF_restore $p
  106.  
  107. PDF_end_page $p
  108. PDF_close $p
  109.  
  110. PDF_delete $p
  111.